# 不定长参数
# 不定长可变参数在声明时，定义函数时不用声明参数名。
# 加了星号（*）的变量args会存放所有未命名的变量参数，args为元组；
# 不定长参数可以接收0-n个参数
def func1(*args):
    print(args)
    pass
func1(1,5555,"tom",1.35)
# Q：使用不定长参数，实现可以传递任意个参数，打印所有参数的和
def getSum(*args):
    '''
    计算所有参数的累加结果
    :param args: 可以传递任意个参数
    :return:
    '''
    result=0   #声明一个临时变量用来存储计算结果
    for item in args:   #循环遍历传进来的参数
        result=result+item   #计算所有参数的累加结果
        pass
    print(result)
    pass
getSum(1,5,6,666,888,20)
# 关键字可变参数:而加**的变量kwargs会存放命名参数，即形如key=value的参数， kwargs为字典
def func2(**kwagrs):
    print(kwagrs)
    pass
func2(a=9,b="tom",age=26,name="tom")
dict1={"name":"tom","age":25}
func2(**dict1)
# 参数复合使用：可变参数可以进行混合使用，关键字可变参数要放在最后
def func3(*args,**kwagrs):
    print(args)
    print(kwagrs)
    pass
func3(1,3,5,9,**{"name":"tom","age":26})
# Q：四种参数：必选参数、缺省参数、可变参数、关键字可变参数可不可以混合使用，若可以，怎样实现？

num_01=5
list1=[1,5,"tom",1.34]
def func4(x):
    print(x)
    x=9
    print(x)
    pass
func4(num_01)
print(num_01)
def func5(y):
    print(y)
    y.append(666)
    print(y)
    pass
func5(list1)
print(list1)






